From: Petr Štetiar Date: Wed, 6 Aug 2025 09:30:40 +0000 (+0000) Subject: kmod: fix build failure in install step over dirty build dir X-Git-Url: http://git.openwrt.org/%22https:/collectd.org//%22/%22https:/collectd.org/%22?a=commitdiff_plain;h=79f78c0e77e61a20063db53f6cf8a12768036cdf;p=feed%2Fpackages.git kmod: fix build failure in install step over dirty build dir When building kmod-32 package for the first time (clean build_dir), it builds and installs fine. When building for 2nd time, sometimes (probably some race condition?) it fails to build in install step with following error: for tool in insmod lsmod rmmod depmod modprobe modinfo; do \ ln -s kmod /tmp/build_dir/target-aarch64_cortex-a73+neon-vfpv4_musl/kmod-32/ipkg-install/usr/bin/$tool; \ done ln: failed to create symbolic link '/tmp/build_dir/target-aarch64_cortex-a73+neon-vfpv4_musl/kmod-32/ipkg-install/usr/bin/insmod': File exists ln: failed to create symbolic link '/tmp/build_dir/target-aarch64_cortex-a73+neon-vfpv4_musl/kmod-32/ipkg-install/usr/bin/lsmod': File exists ln: failed to create symbolic link '/tmp/build_dir/target-aarch64_cortex-a73+neon-vfpv4_musl/kmod-32/ipkg-install/usr/bin/rmmod': File exists ln: failed to create symbolic link '/tmp/build_dir/target-aarch64_cortex-a73+neon-vfpv4_musl/kmod-32/ipkg-install/usr/bin/depmod': File exists ln: failed to create symbolic link '/tmp/build_dir/target-aarch64_cortex-a73+neon-vfpv4_musl/kmod-32/ipkg-install/usr/bin/modprobe': File exists ln: failed to create symbolic link '/tmp/build_dir/target-aarch64_cortex-a73+neon-vfpv4_musl/kmod-32/ipkg-install/usr/bin/modinfo': File exists Lets fix it by backporting upstream fix. Fixes: #27171 Link: https://lore.kernel.org/r/20240306145804.135709-1-lucas.de.marchi@gmail.com Upstream-Status: Backport [https://github.com/kmod-project/kmod/commit/c5054b215089f9e3cdc9602232649c2b5b1de743] Signed-off-by: Petr Štetiar --- diff --git a/utils/kmod/patches/020-build-allow-to-install-over-dirty-dir.patch b/utils/kmod/patches/020-build-allow-to-install-over-dirty-dir.patch new file mode 100644 index 0000000000..afaadc2b64 --- /dev/null +++ b/utils/kmod/patches/020-build-allow-to-install-over-dirty-dir.patch @@ -0,0 +1,45 @@ +From c5054b215089f9e3cdc9602232649c2b5b1de743 Mon Sep 17 00:00:00 2001 +From: Lucas De Marchi +Date: Wed, 6 Mar 2024 08:58:04 -0600 +Subject: [PATCH] build: Allow to install over dirty dir + +Before commit e98cef6f3f8c ("make: install/uninstall tools symlinks to +kmod") it was possible to call `make install DESTDIR=` multiple +times. Use `ln -sf` so the symlink is always re-created. + +It would be preferred to remove install in an empty dir, but there's +not a bad consequence of re-using the same, so let the user decide. +Fixes the following errors while installing for the second time: + + ln: failed to create symbolic link '/tmp/inst/usr/bin/insmod': File exists + ln: failed to create symbolic link '/tmp/inst/usr/bin/lsmod': File exists + ln: failed to create symbolic link '/tmp/inst/usr/bin/rmmod': File exists + ln: failed to create symbolic link '/tmp/inst/usr/bin/depmod': File exists + ln: failed to create symbolic link '/tmp/inst/usr/bin/modprobe': File exists + ln: failed to create symbolic link '/tmp/inst/usr/bin/modinfo': File exists + make[3]: *** [Makefile:2679: install-exec-hook] Error 1 + make[2]: *** [Makefile:2553: install-exec-am] Error 2 + make[1]: *** [Makefile:2439: install-am] Error 2 + make: *** [Makefile:1848: install-recursive] Error 1 + +Cc: Emil Velikov +Closes: https://github.com/kmod-project/kmod/issues/35 +Reviewed-by: Emil Velikov +Link: https://lore.kernel.org/r/20240306145804.135709-1-lucas.de.marchi@gmail.com +Upstream-Status: Backport [https://github.com/kmod-project/kmod/commit/c5054b215089f9e3cdc9602232649c2b5b1de743] +Signed-off-by: Lucas De Marchi +--- + Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/Makefile.am ++++ b/Makefile.am +@@ -113,7 +113,7 @@ install-exec-hook: + fi + if BUILD_TOOLS + for tool in insmod lsmod rmmod depmod modprobe modinfo; do \ +- $(LN_S) kmod $(DESTDIR)$(bindir)/$$tool; \ ++ $(LN_S) -f kmod $(DESTDIR)$(bindir)/$$tool; \ + done + endif +